package IHM;

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

/**
 * Classe gerant l'affichage des images dans la zone d'aperçu
 * @author Aubry Thomas
 * @author Bouchet Sylvain
 * @author Fauvel Alexis
 * @author Lessieur Jocelyn
 * @author Mathias Bastien 
 * @author Teuf Antoine
 * @version 1.0
 */
public class VisuImage extends JPanel {

	/**
	 * image à afficher dans la visu
	 * @see VisuImage#getImgHeight()
	 */
	private Image img;
	
	/**
	 * L'instance de l'IHM de l'application
	 */
	private IHM ihm;
	
	/**
	 * facteur de redimension des images
	 */
	private double facteur;

	/**
	 * Constructeur de la classe VisuImage
	 * @param nomImage	nom de l'image a afficher
	 * @param ihm		l'instance de l'IHM
	 */
	public VisuImage(String nomImage, IHM ihm) {
		this.ihm=ihm;
		try {
			img=ImageIO.read(new File(nomImage));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		facteur=1;
		if(img.getWidth(this)>ihm.getVisu().getWidth()){
			facteur=(ihm.getVisu().getWidth()*0.8)/img.getWidth(this);
		}
	}

	/**
	 * Permet de desinner l'image
	 */
	public void paintComponent(Graphics g) {
		if(img.getWidth(this)>ihm.getVisu().getWidth()){
			g.drawImage(img, 0, 5, (int)(ihm.getVisu().getComponent(0).getWidth()), (int)(img.getHeight(this)*facteur), this);
		}
		else
			g.drawImage(img,((this.getWidth()/2) -(img.getWidth(this)/2)), 5, this);
	}
	
	/**
	 * Permet de recuperer la hauteur de l'image
	 * @return la hauteur de l'image dans un int
	 */
	public int getImgHeight(){
		return (int)(img.getHeight(this)*facteur);
	}
}
